home *** CD-ROM | disk | FTP | other *** search
- warn_ver 201
- #
- # Make-Prozedur für ein Ein-Modul-Programm. Es darf eine .h-Datei des
- # gleichen Namens existieren, muß aber nicht. Wird ein Parameter übergeben,
- # dann ist dies der Name des C-Moduls, sonst wird derjenige dieser Prozedur
- # verwendet. Man braucht ihr also immer nur den Namen des C-Programms zu
- # geben, und alles ist in Ordnung.
- #
- # Die verwendeten Pfade und Optionen müssen natürlich erst angepaßt werden
- #
- let cc$ = "\usr\bin\cc.prg"
- let cl$ = "\usr\bin\cl.prg"
- let prog_art$ = "prg"; # stets verwendete Dateiendung des fertigen Programms
- let cc_options$ = "-xyz -i=\usr\include"
- let cl_options$ = "-xyz -o=programm$"
- let library$ = "float.lib std.lib tos.lib"
-
- let programm$ = 'argv$[argc==1]'
- let quelle$ = 'programm$'
- let object$ = 'programm$'
- let include$ = 'programm$'
-
- chg_ext quelle$, "c"; # ergibt den Quelltextnamen
- chg_ext object$, "o"; # ergibt den Namen des Linkmoduls
- chg_ext include$, "h"; # ergibt den Namen der evtl. Includedatei
- chg_ext programm$, 'prog_art$';# ergibt den Namen der ausführbaren Datei
-
- # nun geht es ans Übersetzen
-
- while istomake(object$: quelle$, include$)
- putc "cc.prg ", cc_options$, " ", quelle$.
- del c_err
- out_to c_err
- cc$ cc_options$ quelle$
- out_to stdout
- if RC; # Fehler: Editor starten
- ed.prg c_err quelle$
- exit RC; # Prozedurabbruch vom Editor mittels Returncode != 0
- endif
- again
-
- # jetzt noch zusammenbinden
-
- if istomake(programm$: object$)
- putc "cl.prg -o=", programm$, " -s=", stacksize, object$, " ", library$.
-
- cl$ {cl_options$} object$ library$
- # Dank der geschweiften Klammern wird innerhalb von cl_options noch die
- # enthaltene Variable programm$ richtig expandiert.
-
- if RC; # Link-Fehler: Ausgabe anhalten, damit man die
- putc "eine Taste zum Fortfahren".
- gosub getchar(); # Meldung des Linkers lesen kann
- del programm$; # sonst können fehlerhafte Programme erzeugt werden
- else
- putc programm$, " wurde erzeugt".
- endif
- else
- putc programm$, " ist auf dem aktuellen Stand!".
- gosub getchar()
- endif
- end.
-